home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / dlg / base36v1.lha / base36.c < prev    next >
C/C++ Source or Header  |  1994-07-27  |  2KB  |  89 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void reverse(char *);
  5.  
  6. void main(int argc, char *argv[])
  7. {
  8.  int torip[4], todec=0, sl=0;
  9.  register int start, i, temp=1, j;
  10.  char inline[10];
  11.  
  12.  for(i=0; i<4; i++)
  13.   torip[i] = 0;
  14.  
  15.  if(argc > 1) {
  16.   strcpy(inline, argv[1]);
  17.  
  18.   for(i=0; i<strlen(inline); i++) {
  19.  
  20.    if(isalpha(inline[i])) {
  21.     reverse(inline);
  22.  
  23.     sl=strlen(inline);
  24.     for(j=0; j<sl; j++) {
  25.  
  26.      if(isalpha(inline[j])) {
  27.       if(islower(inline[j]))
  28.        inline[j]-=87;
  29.       else
  30.        inline[j]-=55;
  31.      } else
  32.       inline[j]-=48;
  33.      todec += temp*inline[j];
  34.      temp *= 36;
  35.     }
  36.  
  37.     printf("Decimal:  %d\n", todec);
  38.     printf("    RIP:  %s\n", argv[1]);
  39.     return;
  40.    }
  41.   }
  42.  
  43.   start = atoi(argv[1]);
  44.   torip[1] = start/36;
  45.   torip[0] = start-(36*torip[1]);
  46.   if (torip[1] > 36) {
  47.    start = torip[1];
  48.    torip[2] = start/36;
  49.    torip[1] = start-(36*torip[2]);
  50.    if (torip[2] > 36) {
  51.     start = torip[2];
  52.     torip[3] = start/36;
  53.     torip[2] = start-(36*torip[3]);
  54.    }
  55.   }
  56.   for(i=0; i<4; i++){
  57.    if (torip[i]>=0 && torip[i]<=9)
  58.     torip[i] += 48;
  59.    else
  60.     torip[i] += 55;
  61.   }
  62.  
  63.   temp=1;
  64.  
  65.   strcpy(inline, argv[1]);
  66.   reverse(inline);
  67.   sl=strlen(inline);
  68.   for(j=0; j<sl; j++) {
  69.    inline[j]-=48;
  70.    todec +=temp*inline[j];
  71.    temp *= 36;
  72.   }
  73.  
  74.   printf("Decimal:  %d\n", todec);
  75.   printf("    RIP:  %c%c%c%c\n", torip[3], torip[2], torip[1], torip[0]);
  76.   return;
  77.  }
  78. }
  79.  
  80. void reverse(register char *s)
  81. {
  82.  register int c, i, j;
  83.  
  84.  for(i=0, j=strlen(s)-1; i<j; i++, j--) {
  85.   c=s[i];
  86.   s[i]=s[j];
  87.   s[j]=c;
  88.  }
  89. }